@startuml
skinparam monochrome true
skinparam ClassBackgroundColor White
hide empty members
hide circle
skinparam defaultFontName Arial
skinparam defaultFontSize 11
skinparam classfontstyle bold
class "Service \nCart : Component" as _95_Cart
class "Service \nCatalogue : Component" as _95_Catalogue
class "Service \nDispatch : Component" as _95_Dispatch
class "Service \nPayment : Component" as _95_Payment
class "Service \nRatings : Component" as _95_Ratings
class "Service \nShipping : Component" as _95_Shipping
class "Service \nUser : Component" as _95_User
class "Service, Facade \nNGINX API Gateway : Component" as _95_NGINX_32_API_32_Gateway
class "Client \nREST API Client : Component" as _95_REST_32_API_32_Client
class "Web UI \nWeb UI Client : Component" as _95_Web_32_UI_32_Client
class "RedisDB \nCart and Anonymous User Count DB : Component" as _95_Cart_32_and_32_Anonymous_32_User_32_Count_32_DB
class "Monitoring \nCart Prometheus Monitor : Component" as _95_Cart_32_Prometheus_32_Monitor
class "MongoDB \nCatalogue Users Orders DB : Component" as _95_Catalogue_32_Users_32_Orders_32_DB
class "Service, External Component \nPaypal Payment Gateway : Component" as _95_Paypal_32_Payment_32_Gateway
class "Monitoring \nPayment Prometheus Monitor : Component" as _95_Payment_32_Prometheus_32_Monitor
class "Tracing, External Component \nInstana Agent : Component" as _95_Instana_32_Agent
class "Message Broker \nRabbit MQ : Component" as _95_Rabbit_32_MQ
class "MySQLDB \nRatings and Shipping Cities DB : Component" as _95_Ratings_32_and_32_Shipping_32_Cities_32_DB
_95_Cart --> _95_Catalogue: "RESTful HTTP, Asynchronous \n" 
_95_Cart --> _95_Cart_32_and_32_Anonymous_32_User_32_Count_32_DB: "RESP, Synchronous + Asynchronous \n" 
_95_Cart --> _95_Cart_32_Prometheus_32_Monitor: "In-Memory Connector \n" 
_95_Cart --> _95_Instana_32_Agent: "HTTP/2 \n" 
_95_Catalogue --> _95_Catalogue_32_Users_32_Orders_32_DB: "MongoWire \n" 
_95_Catalogue --> _95_Instana_32_Agent: "HTTP/2 \n" 
_95_Dispatch --> _95_Instana_32_Agent: "HTTP/2 \n" 
_95_Dispatch --> _95_Rabbit_32_MQ: "Message Consumer \n{channel = "orders"}\n" 
_95_Payment --> _95_Paypal_32_Payment_32_Gateway: "RESTful HTTP, Synchronous \n" 
_95_Payment --> _95_User: "RESTful HTTP, Synchronous \n" 
_95_Payment --> _95_Cart: "RESTful HTTP, Synchronous \n" 
_95_Payment --> _95_Payment_32_Prometheus_32_Monitor: "In-Memory Connector \n" 
_95_Payment --> _95_Instana_32_Agent: "HTTP/2 \n" 
_95_Payment --> _95_Rabbit_32_MQ: "Message Producer \n{channel = "orders"}\n" 
_95_Ratings --> _95_Ratings_32_and_32_Shipping_32_Cities_32_DB: "MySQL Protocol \n" 
_95_Ratings --> _95_Catalogue: "RESTful HTTP \n" 
_95_Shipping --> _95_Cart: "RESTful HTTP \n" 
_95_Shipping --> _95_Ratings_32_and_32_Shipping_32_Cities_32_DB: "JDBC \n" 
_95_User --> _95_Cart_32_and_32_Anonymous_32_User_32_Count_32_DB: "RESP, Synchronous \n" 
_95_User --> _95_Catalogue_32_Users_32_Orders_32_DB: "MongoWire \n" 
_95_User --> _95_Instana_32_Agent: "HTTP/2 \n" 
_95_NGINX_32_API_32_Gateway --> _95_Catalogue: "RESTful HTTP \n" 
_95_NGINX_32_API_32_Gateway --> _95_User: "RESTful HTTP \n" 
_95_NGINX_32_API_32_Gateway --> _95_Cart: "RESTful HTTP \n" 
_95_NGINX_32_API_32_Gateway --> _95_Shipping: "RESTful HTTP \n" 
_95_NGINX_32_API_32_Gateway --> _95_Payment: "RESTful HTTP \n" 
_95_NGINX_32_API_32_Gateway --> _95_Ratings: "RESTful HTTP \n" 
_95_REST_32_API_32_Client --> _95_NGINX_32_API_32_Gateway: "RESTful HTTP \n" 
_95_Web_32_UI_32_Client --> _95_NGINX_32_API_32_Gateway: "HTTP \n" 
@enduml
